@echo off
chcp 65001 >nul
title 语音情感识别系统启动脚本

echo ==========================================
echo 🎙️  语音情感识别系统启动脚本 (Windows版)
echo ==========================================

REM 检查Python是否安装
python --version >nul 2>&1
if errorlevel 1 (
    echo ❌ Python未安装，请先安装Python 3.8+
    pause
    exit /b 1
)

REM 检查Node.js是否安装
node --version >nul 2>&1
if errorlevel 1 (
    echo ❌ Node.js未安装，请先安装Node.js 18+
    pause
    exit /b 1
)

REM 检查npm是否安装
npm --version >nul 2>&1
if errorlevel 1 (
    echo ❌ npm未安装，请先安装npm
    pause
    exit /b 1
)

echo ✅ 环境检查通过

REM 创建日志目录
if not exist "logs" mkdir logs

REM 启动后端服务
echo.
echo 🚀 启动后端API服务...
cd backend

REM 检查虚拟环境
if not exist "venv" (
    echo 📦 创建Python虚拟环境...
    python -m venv venv
)

REM 激活虚拟环境
echo 📦 激活虚拟环境...
call venv\Scripts\activate.bat

REM 安装依赖
echo 📦 安装Python依赖...
pip install -r requirements.txt

REM 启动后端服务（后台运行）
echo 🔥 启动FastAPI服务...
start "Backend-API" /min python run.py

cd ..

REM 等待后端服务启动
echo ⏳ 等待后端服务启动...
timeout /t 5 /nobreak >nul

REM 检查后端服务是否正常
echo 🔍 检查后端服务状态...
curl -s http://localhost:8000/health >nul 2>&1
if errorlevel 1 (
    echo ⚠️  后端服务可能未正常启动，请检查日志
) else (
    echo ✅ 后端服务启动成功
)

REM 启动前端服务
echo.
echo 🚀 启动前端Web界面...
cd webui

REM 安装依赖
echo 📦 安装Node.js依赖...
npm install

REM 启动前端服务（新窗口）
echo 🔥 启动Next.js服务...
start "Frontend-WebUI" npm run dev

cd ..

REM 等待前端服务启动
echo ⏳ 等待前端服务启动...
timeout /t 10 /nobreak >nul

echo.
echo ==========================================
echo 🎉 系统启动完成！
echo ==========================================
echo 🌐 前端界面: http://localhost:3000
echo 🔧 后端API: http://localhost:8000
echo 📚 API文档: http://localhost:8000/docs
echo.
echo 📋 常用操作:
echo   - 查看前端: 浏览器访问 http://localhost:3000
echo   - 查看API文档: 浏览器访问 http://localhost:8000/docs
echo   - 停止服务: 运行 stop.bat 或在服务窗口按 Ctrl+C
echo   - 端口检查: 运行 check-ports.bat
echo.
echo ⚠️  注意: 
echo   - 后端服务在最小化窗口中运行 (支持Ctrl+C优雅停止)
echo   - 前端服务在单独窗口中运行 (支持Ctrl+C停止)
echo   - 推荐使用 stop.bat 统一停止所有服务
echo ==========================================

REM 提示用户并等待
echo.
echo 💡 提示: 按任意键退出启动脚本 (服务将继续在后台运行)
pause >nul 